import { AnimationBehaviour } from './behaviours/AnimationBehaviour';
import { Camera } from './behaviours/Camera';
import { BoxCollider, CircleCollider, EdgeCollider } from './behaviours/Collider';
import { GameObjectAcitivable } from './behaviours/GameObjectAcitivable';
import { Jumpable } from './behaviours/Jumpable';
import { MainRolePrefabBehaviour } from './behaviours/MainRolePrefabBehaviour';
import { BackGroundBinding } from './behaviours/BackGroundBinding';
import { Prefab } from './behaviours/Prefab';
import { RigidBody } from './behaviours/RigidBody';
import { Rotatable } from './behaviours/Rotatable';
import { ShapeRectRenderer } from './behaviours/ShapeRectRenderer';
import { Sound } from './behaviours/sound';
import { Walkable } from './behaviours/Walkable';
import { GameEngine, registerBehaviourClass, registerPrefabBehaviourClass } from './engine';
import { AnimationRenderer } from './engine/AnimationRenderer';
import { BitmapRenderer } from './engine/BitmapRenderer';
import { TextRenderer } from './engine/TextRenderer';
import { Transform } from './engine/Transform';
import { ButtonBinding } from './behaviours/ButtonBinding';
import { Clickable } from './behaviours/Clickable';
import { StoneBinding } from './behaviours/StoneBinding';
import { PhotoWalk } from './behaviours/PhotoWalk';
import { Life } from './behaviours/Life';
import { LongGroundBinding } from './behaviours/LongGroundBinding';
import { SceneChange } from './behaviours/SceneChange';
import { PortalBinding } from './behaviours/PortalBinding';
import { PhysicsWorld } from './behaviours/PhysicsWorld';
import { BlockPrefabBinding } from './behaviours/BlockPrefabBinding';
import { DamageOne } from './behaviours/DamageOne';
import { HeartBinding } from './behaviours/HeartBinding';
import { SpiderBinding } from './behaviours/SpiderBinding';
import { InsectBinding } from './behaviours/InsectBinding';
import { KnifeBinding } from './behaviours/KnifeBinding';
import { ForkBinding } from './behaviours/ForkBinding';
import { GroundspikeBinding } from './behaviours/GroundspikeBinding';
import { MushroomBinding } from './behaviours/MushroomBinding';
import { HatBinding } from './behaviours/HatBinding';
import { HeadBinding } from './behaviours/HeadBinding';
import { SpecialGroundBinding } from './behaviours/SpecialGroundBinding';
import { CollectionBinding } from './behaviours/CollectionBinding';
import { PillarBinding } from './behaviours/PillarBinding';
import { Scene1Binding } from './behaviours/Scene1Binding';
import { Scene2Binding } from './behaviours/Scene2Binding';
import { ClickSceneChange } from './behaviours/ClickSceneChange';
import { Scene3Binding } from './behaviours/Scene3Binding';
import { Scene4Binding } from './behaviours/Scene4Binding';
import { Scene5Binding } from './behaviours/Scene5Binding';
import { Scene6Binding } from './behaviours/Scene6Binding';
import { Scene7Binding } from './behaviours/Scene7Binding';
import { Scene8Binding } from './behaviours/Scene8Binding';
import { MenuBinding } from './behaviours/MenuBinding';
import { ChooseMenuBinding } from './behaviours/ChooseMenuBinding';
import { D1Behaviour } from './behaviours/D1Behaviour';
import { dialogAnimationBehaviour } from './behaviours/dialogAnimationBehaviour';
import { D2Behaviour } from './behaviours/D2Behaviour';
import { D3Behaviour } from './behaviours/D3Behaviour';
import { D4Behaviour } from './behaviours/D4Behaviour';
import { D5Behaviour } from './behaviours/D5Behaviour';
import { D6Behaviour } from './behaviours/D6Behaviour';
import { D7Behaviour } from './behaviours/D7Behaviour';
import { D8Behaviour } from './behaviours/D8Behaviour';
import { D2Behaviour_end } from './behaviours/D2Behaviour_end';
import { D3Behaviour_end } from './behaviours/D3Behaviour_end';
import { D4Behaviour_end } from './behaviours/D4Behaviour_end';
import { D5Behaviour_end } from './behaviours/D5Behaviour_end';
import { D7Behaviour_end } from './behaviours/D7Behaviour_end';
import { D8Behaviour_end } from './behaviours/D8Behaviour_end';
import { Scene2Binding_start } from './behaviours/Scene2Binding_start';
import { Scene2Binding_end } from './behaviours/Scene2Binding_end';
import { Scene7Binding2 } from './behaviours/Scene7Binding2';
import { Scene3Binding_end } from './behaviours/Scene3Binding_end';
import { Scene4Binding_end } from './behaviours/Scene4Binding_end';
import { Scene5Binding_end } from './behaviours/Scene5Binding_end';
import { Scene7Binding_start } from './behaviours/Scene7Binding_start';
import { D7Behaviour_mid } from './behaviours/D7Behaviour_mid';
import { Scene7Binding_mid } from './behaviours/Scene7Binding_mid';
import { Scene7Binding_end } from './behaviours/Scene7Binding_end';
import { Scene8Binding_end } from './behaviours/Scene8Binding_end';
import { MonsterAnimationBehaviour } from './behaviours/MonsterAnimationBehaviour';

import { defeatScene2Binding } from './behaviours/defeatScene2Binding';
import { defeatScene3Binding } from './behaviours/defeatScene3Binding';
import { defeatScene5Binding } from './behaviours/defeatScene5Binding';
import { defeatScene7Binding } from './behaviours/defeatScene7Binding';
import { StayStillWalk } from './behaviours/StayStillWalk';
import { DamageScene4Binding } from './behaviours/DamageScene4Binding';
import { DamageScene6Binding } from './behaviours/DamageScene6Binding';
import { DamageScene7Binding } from './behaviours/DamageScene7Binding';
import { DamageScene8Binding } from './behaviours/DamageScene8Binding';
import { DamageScene2Binding } from './behaviours/DamageScene2Binding';
import { SkullGroundBinding } from './behaviours/SkullGroundBinding';
import { pillarGroundBinding } from './behaviours/pillarGroundBinding';
import { defeatScene4Binding } from './behaviours/defeatScene4Binding';
import { DamageScene3Binding } from './behaviours/DamageScene3Bindings';
import { DamageScene5Binding } from './behaviours/DamageScene5Binding';
import { SoundButtonBinding } from './behaviours/SoundButtonBinding';
import { ButterflyAnimationBehaviour } from './behaviours/ButterflyAnimationBehaviour';
import { GroundspikeBinding2 } from './behaviours/GroundspikeBinding2';
import { AxeBinding } from './behaviours/AxeBinding';
import { ArrowBinding } from './behaviours/ArrowBinding';
import { TorchBinding } from './behaviours/TorchBinding';
import { Axe2Binding } from './behaviours/Axe2Binding';
import { KeepFollow } from './behaviours/KeepFollow';
import { GhostAnimationBehaviour } from './behaviours/GhostAnimationBehaviour';

registerBehaviourClass(Transform);
registerBehaviourClass(TextRenderer);
registerBehaviourClass(BitmapRenderer);
registerBehaviourClass(Walkable);
registerBehaviourClass(Jumpable);
registerBehaviourClass(GameObjectAcitivable);
registerBehaviourClass(Rotatable);
registerBehaviourClass(ShapeRectRenderer);
registerBehaviourClass(RigidBody);
registerBehaviourClass(BoxCollider);
registerBehaviourClass(CircleCollider);
registerBehaviourClass(EdgeCollider);
registerBehaviourClass(AnimationRenderer);
registerBehaviourClass(Prefab);
registerBehaviourClass(Camera);
registerBehaviourClass(Sound);
registerBehaviourClass(Clickable);
registerBehaviourClass(PhotoWalk);
registerBehaviourClass(Life);
registerBehaviourClass(SceneChange);
registerBehaviourClass(PhysicsWorld);
registerBehaviourClass(DamageOne);
registerBehaviourClass(ClickSceneChange);
registerBehaviourClass(StayStillWalk);
registerBehaviourClass(KeepFollow);
registerBehaviourClass(D1Behaviour);//???????????????
registerBehaviourClass(D2Behaviour);

registerPrefabBehaviourClass(D1Behaviour, './assets/prefabs/DialogPrefab1.yaml')
registerPrefabBehaviourClass(D2Behaviour, './assets/prefabs/DialogPrefab2.yaml')
registerPrefabBehaviourClass(D2Behaviour_end, './assets/prefabs/DialogPrefab2.yaml')
registerPrefabBehaviourClass(D3Behaviour, './assets/prefabs/DialogPrefab3.yaml')
registerPrefabBehaviourClass(D3Behaviour_end, './assets/prefabs/DialogPrefab3.yaml')
registerPrefabBehaviourClass(D4Behaviour, './assets/prefabs/DialogPrefab4.yaml')
registerPrefabBehaviourClass(D4Behaviour_end, './assets/prefabs/DialogPrefab4.yaml')
registerPrefabBehaviourClass(D5Behaviour, './assets/prefabs/DialogPrefab5.yaml')
registerPrefabBehaviourClass(D5Behaviour_end, './assets/prefabs/DialogPrefab5.yaml')
registerPrefabBehaviourClass(D6Behaviour, './assets/prefabs/DialogPrefab6.yaml')
registerPrefabBehaviourClass(D7Behaviour, './assets/prefabs/DialogPrefab7.yaml')
registerPrefabBehaviourClass(D7Behaviour_end, './assets/prefabs/DialogPrefab7.yaml')
registerPrefabBehaviourClass(D7Behaviour_mid, './assets/prefabs/DialogPrefab7.yaml')
registerPrefabBehaviourClass(D8Behaviour, './assets/prefabs/DialogPrefab8.yaml')
registerPrefabBehaviourClass(D8Behaviour_end, './assets/prefabs/DialogPrefab8.yaml')
registerPrefabBehaviourClass(MainRolePrefabBehaviour, './assets/prefabs/mainRole.yaml')
registerPrefabBehaviourClass(BackGroundBinding, './assets/prefabs/BackGround.yaml')
registerPrefabBehaviourClass(LongGroundBinding, './assets/prefabs/LongGround.yaml')
registerPrefabBehaviourClass(ButtonBinding, './assets/prefabs/Button.yaml')
registerPrefabBehaviourClass(SoundButtonBinding, './assets/prefabs/SoundButton.yaml')
registerPrefabBehaviourClass(StoneBinding, './assets/prefabs/Stone.yaml')
registerPrefabBehaviourClass(SpiderBinding, './assets/prefabs/Spider.yaml')
registerPrefabBehaviourClass(InsectBinding, './assets/prefabs/Insect.yaml')
registerPrefabBehaviourClass(KnifeBinding, './assets/prefabs/Knife.yaml')
registerPrefabBehaviourClass(ForkBinding, './assets/prefabs/Fork.yaml')
registerPrefabBehaviourClass(GroundspikeBinding, './assets/prefabs/Groundspike.yaml')
registerPrefabBehaviourClass(MushroomBinding, './assets/prefabs/Mushroom.yaml')
registerPrefabBehaviourClass(HatBinding, './assets/prefabs/Hat.yaml')
registerPrefabBehaviourClass(HeadBinding, './assets/prefabs/Head.yaml')
registerPrefabBehaviourClass(SpecialGroundBinding, './assets/prefabs/SpecialGround.yaml')
registerPrefabBehaviourClass(SkullGroundBinding, './assets/prefabs/SkullGround.yaml')
registerPrefabBehaviourClass(pillarGroundBinding, './assets/prefabs/pillarGround.yaml')
registerPrefabBehaviourClass(HeartBinding, './assets/prefabs/Heart.yaml')
registerPrefabBehaviourClass(CollectionBinding, './assets/prefabs/Collection.yaml')
registerPrefabBehaviourClass(HatBinding, './assets/prefabs/Hat.yaml')
registerPrefabBehaviourClass(PortalBinding, './assets/prefabs/Portal.yaml')
registerPrefabBehaviourClass(PillarBinding, './assets/prefabs/Pillar.yaml')
registerPrefabBehaviourClass(GroundspikeBinding2, './assets/prefabs/Groundspike2.yaml')//地刺2
registerPrefabBehaviourClass(AxeBinding,'./assets/prefabs/Axe.yaml')//斧子
registerPrefabBehaviourClass(ArrowBinding,'./assets/prefabs/Arrow.yaml')//箭
registerPrefabBehaviourClass(TorchBinding,'./assets/prefabs/Torch.yaml')//火把
registerPrefabBehaviourClass(Axe2Binding,'./assets/prefabs/Axe2.yaml')//斧子



registerPrefabBehaviourClass(AnimationBehaviour, './assets/prefabs/Alice.yaml')
// registerPrefabBehaviourClass(SoundBinding, './')

registerPrefabBehaviourClass(dialogAnimationBehaviour, './assets/prefabs/DialogAlice.yaml')
registerPrefabBehaviourClass(MonsterAnimationBehaviour,'./assets/prefabs/AnimationMonster.yaml')
registerPrefabBehaviourClass(ButterflyAnimationBehaviour,'./assets/prefabs/AnimationButterfly.yaml')
registerPrefabBehaviourClass(GhostAnimationBehaviour,'./assets/prefabs/AnimationGhost.yaml')
//wangze
// registerPrefabBehaviourClass(AnimationBehaviour, './assets/prefabs/mainRole.yaml')
registerPrefabBehaviourClass(BlockPrefabBinding, './assets/prefabs/block.yaml')


registerPrefabBehaviourClass(Scene1Binding,'./assets/scenes/scene1.yaml')
registerPrefabBehaviourClass(Scene2Binding_start,'./assets/scenes/dialogscene2.yaml')
registerPrefabBehaviourClass(Scene2Binding_end,'./assets/scenes/dialogscene2_end.yaml')
registerPrefabBehaviourClass(Scene2Binding,'./assets/scenes/scene2.yaml')
registerPrefabBehaviourClass(Scene3Binding,'./assets/scenes/scene3.yaml')
registerPrefabBehaviourClass(Scene3Binding_end,'./assets/scenes/dialogscene3_end.yaml')
registerPrefabBehaviourClass(Scene4Binding,'./assets/scenes/scene4.yaml')
registerPrefabBehaviourClass(Scene4Binding_end,'./assets/scenes/dialogscene4_end.yaml')
registerPrefabBehaviourClass(Scene5Binding,'./assets/scenes/scene5.yaml')
registerPrefabBehaviourClass(Scene5Binding_end,'./assets/scenes/dialogscene5_end.yaml')
registerPrefabBehaviourClass(Scene6Binding,'./assets/scenes/scene6.yaml')
registerPrefabBehaviourClass(Scene7Binding_start,'./assets/scenes/dialogscene7.yaml')
registerPrefabBehaviourClass(Scene7Binding_mid,'./assets/scenes/dialogscene7_mid.yaml')
registerPrefabBehaviourClass(Scene7Binding_end,'./assets/scenes/dialogscene7_end.yaml')
registerPrefabBehaviourClass(Scene7Binding,'./assets/scenes/scene7_1.yaml')
registerPrefabBehaviourClass(Scene7Binding2,'./assets/scenes/scene7_2.yaml')
registerPrefabBehaviourClass(Scene8Binding,'./assets/scenes/scene8.yaml')
registerPrefabBehaviourClass(Scene8Binding_end,'./assets/scenes/dialogscene8_end.yaml')
registerPrefabBehaviourClass(MenuBinding,'./assets/scenes/menu.yaml')
registerPrefabBehaviourClass(ChooseMenuBinding,'./assets/scenes/chooseMenu.yaml')


registerPrefabBehaviourClass(defeatScene2Binding,'./assets/scenes/DefeatScene2.yaml')
registerPrefabBehaviourClass(defeatScene3Binding,'./assets/scenes/DefeatScene3.yaml')
registerPrefabBehaviourClass(defeatScene4Binding,'./assets/scenes/DefeatScene4.yaml')
registerPrefabBehaviourClass(defeatScene5Binding,'./assets/scenes/DefeatScene5.yaml')
registerPrefabBehaviourClass(defeatScene7Binding,'./assets/scenes/DefeatScene7.yaml')

registerPrefabBehaviourClass(DamageScene2Binding,'./assets/scenes/DamageScene2.yaml')
registerPrefabBehaviourClass(DamageScene3Binding,'./assets/scenes/DamageScene3.yaml')
registerPrefabBehaviourClass(DamageScene4Binding,'./assets/scenes/DamageScene4.yaml')
registerPrefabBehaviourClass(DamageScene5Binding,'./assets/scenes/DamageScene5.yaml')
registerPrefabBehaviourClass(DamageScene6Binding,'./assets/scenes/DamageScene6.yaml')
registerPrefabBehaviourClass(DamageScene7Binding,'./assets/scenes/DamageScene7.yaml')
registerPrefabBehaviourClass(DamageScene8Binding,'./assets/scenes/DamageScene8.yaml')


const engine = new GameEngine()
engine.start()
